// 常函数与常对象
#include <iostream>
using namespace std;
class Person {
public:
    int m_age;
    mutable int m_height;
    // this指针的本质是指针常量，即this的指向不能修改
    // 常函数
    // 成员函数后加const修饰this指向的内容，让指针指向的值也不可以修改
    void show() const {
        // this->m_age = 10; // 常函数中这样写错误
        this->m_height = 180; // mutable修饰变量不受const限制
    }
    void show2() {

    }
};
int main(void) {
    const Person p = Person(); // 常对象
    // p1.m_age = 20; // 非法
    p.m_height = 190;

    // 常对象只能调用常函数
    p.show();
    // p.show2();  // 非法

    return 0;
}